package com.vvv.designpattern.items.vistor;

import com.vvv.designpattern.items.composite.AbstractProductItem;

/**
 * @author vvv
 * @date 2023-11-19 14 12
 * discription
 * 访问者模式：旨在操作某对象结构中各个（各层级）元素的模式，在不修改元素的整体结构下，添加这些元素的新操作
 * 人话：操作整个树形结构的节点，比如删除这个树形结构的某个节点
 *
 */
public interface ItemVisitor<T> {

    // 定义具体访问者能够访问的数据类型，我们这里要操作的元素就是ProductComposite
    T visitor(AbstractProductItem productItem);
}
